# 导入相关库
import sys
import requests
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow, QDialog
# 导入创建的主窗口python类
from mainwindow import Ui_MainWindow
from childwindow import Ui_Dialog

class MyDialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

class MyMainWindow(QMainWindow):
    '''
    自定义一个MyMainWindow类（继承了QMainWindow类）
    '''
    def __init__(self):
        '''
        初始化方法
        '''
        # 调用父类 `QMainWindow` 的初始化方法，确保父类的所有功能都被正确初始化。
        QMainWindow.__init__(self)
        # 创建一个 `Ui_MainWindow` 类的实例，并将其赋值给 `self.ui`。这个实例将用于设置窗口的界面
        self.ui = Ui_MainWindow()
        # 调用 `Ui_MainWindow` 实例的 `setupUi` 方法，并传入当前 `MyMainWindow` 类的实例作为参数。这个方法将设置窗口的属性和添加部件（如按钮、文本框等）。
        self.ui.setupUi(self)
        self.account : str
        self.password : str
        self.request = requests.Session()
        self.cwin : MyDialog
        self.init_widget()

    def init_widget(self):
        self.ui.pushButton.clicked.connect(self.clicked_login)

    def clicked_login(self):
        self.login_nlecloud()

    def login_nlecloud(self):
        self.account = self.ui.textEdit_account.toPlainText()
        self.password = self.ui.textEdit_password.toPlainText()
        print(self.account, "登录中")
        url = "https://api.nlecloud.com/Users/Login"
        login_data = {"Account" : self.account, "Password" : self.password}
        response = self.request.post(url=url, data=login_data)
        if response.status_code == 200:
            print(response.json())
            if response.json()['Status'] == 0:
                print('登录成功')
                accesstoken = response.json()['ResultObj']['AccessToken']
                headers = {'AccessToken':accesstoken}
                self.request.headers.update(headers)
                print(self.request.headers)
                self.show_childwindows()
            else:
                print("status", response.json())
        else:
            print(response)

    def show_childwindows(self):
        self.cwin = MyDialog()
        self.cwin.show()

# 主程序入口
if __name__ == '__main__':
    # 创建一个 `QApplication` 对象。在 PyQt5 中，每个 GUI 应用程序都需要一个 `QApplication` 对象。`sys.argv` 是一个从命令行传递给 Python 脚本的参数列表。
    app = QtWidgets.QApplication(sys.argv)
    # 创建一个 `MyMainWindow` 类的实例。
    mainWin = MyMainWindow()
    # 显示窗口
    mainWin.show()
    # 进入应用程序的主事件循环。这个方法会等待，直到应用程序关闭，然后返回一个退出代码。`sys.exit()` 确保一个干净的退出，返回 `app.exec_()` 的结果。
    sys.exit(app.exec_())